package com.antdesignbackend.backend.controller;

import com.antdesignbackend.backend.aop.AuthToken;
import com.antdesignbackend.backend.common.returnResult.ReturnVO;
import com.antdesignbackend.backend.entity.Users;
import com.antdesignbackend.backend.entity.entityVo.SysConfigVo;
import com.antdesignbackend.backend.service.UserService;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.util.DigestUtils;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;

@Controller
@RequestMapping("/sysConfig")
public class SysConfigController {
    private Integer userId;
    @Autowired
    UserService userService;

    /**
     * 个人中心首页
     */
    @GetMapping("/personal")
    @AuthToken
    public String index(HttpServletRequest request, ModelMap modelMap) {
        userId = (Integer) request.getSession().getAttribute("UserID");
        Users user = userService.getById(userId);
        modelMap.addAttribute("user", user);
        return "sysConfig/index";
    }

    @PostMapping("/update")
    @AuthToken
    @ResponseBody
    public ReturnVO update(@RequestBody SysConfigVo sysConfigVo) {
        System.out.println("前端发送过来数据*********************"+sysConfigVo.userNewPassword+"**********"+sysConfigVo.userEmail);
        ReturnVO returnVO = new ReturnVO();
        if (sysConfigVo.userNewPassword != null && !sysConfigVo.userNewPassword.equals("")) {
            if (sysConfigVo.userPassword != null && !sysConfigVo.userPassword.equals("")) {
                String md5Pass = DigestUtils.md5DigestAsHex(sysConfigVo.userPassword.getBytes());
                Users user=userService.getById(userId);
                if(md5Pass.equals(user.getPassword())){
                    String newpwdmd5 = DigestUtils.md5DigestAsHex(sysConfigVo.userNewPassword.getBytes());
                    UpdateWrapper<Users> usersUpdateWrapper=new UpdateWrapper<>();
                    usersUpdateWrapper.set("phone",sysConfigVo.userPhone).set("email",sysConfigVo.userEmail).set("password",newpwdmd5).eq("userId",userId);
                    Boolean flag=userService.update(usersUpdateWrapper);
                    if(flag==true){
                        returnVO.setCode("200");
                    }else{
                        returnVO.setCode("501");
                    }
                }else{
                    returnVO.setCode("500");
                }
            } else {
                returnVO.setCode("500");
            }
        } else {
            UpdateWrapper<Users> usersUpdateWrapper=new UpdateWrapper<>();
            usersUpdateWrapper.set("phone",sysConfigVo.userPhone).set("email",sysConfigVo.userEmail).eq("userId",userId);
            Boolean flag=userService.update(usersUpdateWrapper);
            if(flag==true){
                returnVO.setCode("200");
            }else{
                returnVO.setCode("501");
            }
        }
        return returnVO;
    }

}
